package com.yidiandao.business.utils;

import android.text.TextUtils;

import java.text.DecimalFormat;
import java.text.NumberFormat;

/**
 * 格式化 数字 工具类
 * <p>
 * Created by ChenTao(chentao7v@gmail.com) on 2017/4/1 0001 18:37
 */
public class NumberFormatUtils {

    private static String getStringValue(float input, int fractionDigits) {
        NumberFormat numberFormat = NumberFormat.getInstance();
        // 去除千位分隔符
        numberFormat.setGroupingUsed(false);
        numberFormat.setMinimumFractionDigits(fractionDigits);
        numberFormat.setMaximumFractionDigits(fractionDigits);
        return numberFormat.format(input);
    }

    /**
     * 将input保留指定的位数
     *
     * @param input          输入的float
     * @param fractionDigits 保留的位数
     */
    private static String getFloatValue(float input, int fractionDigits) {
        return getStringValue(input, fractionDigits);
    }

    /**
     * 对input保留两位小数 <b>结果四舍五入<b/>
     */
    public static float get2DecimalFloatValue(float input) {
        return Float.parseFloat(getFloatValue(input, 2));
    }

    /**
     * 对input保留两位小数 <b>结果四舍五入<b/>
     */
    public static String get2DecimalStringValue(float input) {
        return getFloatValue(input, 2);
    }

    /**
     * 格式化发现中的数字显示
     * <pre>
     *      未超过1万,不做任何操作;
     *      超过1万显示,x.x万
     * </pre>
     */
    public static String getLargeFormatValue(String largeNumber) {
        if (TextUtils.isEmpty(largeNumber)) {
            return "0";
        }

        try {
            Long result = Long.parseLong(largeNumber);
            //大于1w的需要显示成1.x万
            if (result >= 10000) {
                DecimalFormat df = new DecimalFormat("0.0");
                return df.format(result / 10000.0) + "万";
            }
            return result + "";

        } catch (NumberFormatException e) {
            return largeNumber;
        }
    }

    public static String getNormalCountValue(String number) {

        if (TextUtils.isEmpty(number)) {
            return null;
        }

        try {
            int numberInt = Integer.parseInt(number);
            if (numberInt > 99) {
                return "99+";
            } else {
                return number;
            }
        } catch (NumberFormatException e) {
            return null;
        }
    }
}
